var express = require('express');
var svgCaptcha = require('svg-captcha');
var router = express.Router();
const { readFile, writeFile, mkdir, readdirSync } = require("fs");
const userDataOption = require('../common/userDataOption')
const {isObject} = require('../utils/validateFn')

// 注册接口
router.post('/loginSign', function (req, res, next) {
  const params = req.body
  console.log(req.body,'login sign new user')
  readFile('./json/userInfo/index.json', 'utf-8', (err, data) => {
    let errMsg = null
    if (!err) {
      let { username, password } = params
      console.log(username)
      let userInfoData = JSON.parse(data)
      let index = userInfoData.findIndex(item => item.username === username)
      if (index === -1) {
        // 可以写入，整理数据
        // 校验数据
        errMsg = checkUserInfoFn(params)
        // 校验通过
        if(!errMsg)  {
          // 整理用户数据
          writeFile()
        }
      } else {
        errMsg = "用户已存在"
      }
    } else {
      errMsg = err;
    }
    res.send({ error: errMsg })
  })

})
// 登录接口
/**
 * @todo 1.增加验证验证码的验证
 *       2.增加多方式登录
 *       3.token生成逻辑
 */
router.post('/login', (req, res, next) => {
  readFile('./json/userInfo/index.json', "utf-8", (err, data) => {
    if (!err) {
      // 校验登录信息，用户名，密码，token
      let { username, password } = req.body
      let userInfoData = JSON.parse(data)
      let index = userInfoData.findIndex(item => item.username === username)
      if (index >= 0) {
        if (password === userInfoData[index].password) {
          res.send({ message: '登录成功', token: '1' })
        } else {
          res.send({ message: '账号/密码不正确' })
        }
      } else {
        res.send({ message: '账号输入有误或不存在，请确认' })
      }
    }
  })

})

// 获取验证码接口
router.get('/captcha', function (req, res,next) {
  var options = require('../common/captchaOptions')
  // 调用生成
	var captcha = svgCaptcha.create(options);
  req.session = {}
	req.session.captcha = captcha.text;
  // 将验证码保存起来
  writeFile('./static/data/captcha.txt',captcha.text,err=>{
    if(!err){
      console.log('验证码写入成功！'+captcha.text)
    }
  })
  res.type('svg');
	res.send(captcha.data);
});
// 整理注册用户数据
function handlerSignUserInfo (userData){
  if(!isObject(userData)) return userData
  let result = {}
  return  result;
}

// 校验用户信息，返回错误信息。
function checkUserInfoFn(userData) {
  for (let i = 0; i < userDataOption.length; i++) {
    const item = userDataOption[i];
    // 非空校验
    if(!userData[item.key]&&item.requireIS){
      return item.name+'不能为空'
    }
    // 校验长度
    if(item.count&&userData[item.key].length>item.count){
      return item.name+'长度不符合规定'
    }
    // 其他特殊校验
    if(item.validateFn){
      return validateFn(userData) 
    }
  }
}


module.exports = router;
